                                     SOFTWARE HOUSE

Il gruppo è composto da: Gasparini Simone (Capo Progetto)
     			 Cipolli Giulio (Programmatore Logico)
			 Franciosi Federico (Programmatore Grafico)
			 Luppi Riccardo (....)

Lo scopo di questo gruppo è quello di: realizzare un programma che riceva in ingresso N                                           numeri reali e li stampi in modo ordinato.
 				       Su richiesta, il programma stamperà anche l'indirizzo di memoria in cui è memorizzato.

                                   TESTO DEL PROGRAMMA


#include <stdio.h>
#include <conio.h>
#include "mialib.h"

#define Max 100

void Ordseqsel(int A[], int N);
void main ()
{
   int A[Max],n,i,pag,Valore,N;
   char car;
   int elenco[Max];
   textcolor(LIGHTGREEN);
   gotoxy (27,5);
   cprintf("LA MITICA SOFTWARE HOUSE");
   textcolor(GREEN);
   gotoxy (8,8);
   cprintf("Il gruppo e' composto da:");
   gotoxy (30,10);
   cprintf("1_ Gasparini Simone (Capo Progetto)");
   gotoxy (30,13);
   cprintf("2_ Cipolli Giulio (Programmatore Logico)");
   gotoxy (30,16);
   cprintf("3_ Franciosi Federico (Programmatore Grafico)");
   gotoxy (30,19);
   cprintf("4_ Luppi Riccardo (Assistente Organizzativo)");
   getch();
   clrscr();

   textcolor(13);
   gotoxy(27,2);cprintf("****************************");
   gotoxy(27,3);cprintf("* Programma Software House *");
   gotoxy(27,4);cprintf("****************************");
   textcolor(14);
   gotoxy(20,7);cprintf(" 1 - EXIT ");
   gotoxy(20,9);cprintf(" 2 - Programma di Ordinamento ");
   textcolor(10);
   gotoxy(25,14);cprintf("Cosa desideri fare? :  ");
   cscanf("%d",&pag);
   while (pag>=3) {
          gotoxy(17,14);
          clreol();
          cprintf("Inserire 1 o 2 ... grazie ...: ");
          cscanf("%d",&pag);
   }
   clrscr();
   fflush(stdin);
   switch (pag) {
      case 1:
         getch();
         break;
      case 2:
        clrscr();
        N=LeggiContr(0,50);
        LeggiElenco(N,elenco);
        clrscr();
        ScriviElenco(N,elenco);
        Ordseqsel(elenco,N);
        ScriviElencoCol(N,elenco,YELLOW);
        gotoxy(25,10);
        textcolor(13);
        cprintf("\n\n\nPremi un tasto per uscire ... ");
        getch();
}
}

Questo programma lo abbiamo organizzato e diviso in 2 parti; nella prima parte abbiamo scritto direttamente il programma, invece nel secondo programma abbiamo scritto le varie funzioni con gli apposito prototipi per il corretto funzionamento del nostro codice sorgente.
La realizzazione del codice è stata prima costruita con il programma Builder, ma vedendo che con Linux tutto questo non andava, lo abbiamo modificato con "Kwrite" per visualizzarlo in tutti e due i sistemi operativi.

			   LIBRERIA CON I PROTOTIPI E LE FUNZIONI



/* ----------------- PROTOTIPI DI FUNZIONE ------------------ */
int LeggiContr(int inf, int sup);       /* Lettura di inf<=N<=sup */

/* ----------------- GESTIONE ARRAY ------------------------- */
void LeggiElenco(int Dim,int A[]);      /* Lettura elenco di Dim valori */
void ScriviElencoCol(int Dim,int A[],int col);/* Vis.elenco dim val.colorati*/
void ScriviElenco(int Dim,int A[]);         /* Vis.elenco dim val.*/
void Ordseqsel(int A[], int N);         /* Ord. sequenziale selettivo di A */

/* ---------------- DEFINIZIONI DI FUNZIONE ---------------------- */
int LeggiContr(int inf, int sup)       /* Lettura di inf<=N<=sup */
{
  int D;
  do{
    textcolor(LIGHTBLUE);
    gotoxy(5,5);
    cprintf(" Inserire un numero compreso tra %d  e  %d \t--> ",inf,sup);
    textcolor(CYAN);
    cscanf(" %d",&D);
    while ( D<0 || D>50 ){
    clreol();
    textcolor(13);
    gotoxy(20,10);
    cprintf("Non ci siamo capiti! ... riprova ... : ");
    cscanf("%d",&D);
   }
  }while (D>sup||D<inf);
   return D;
  }

/* ----------------- DEFINIZIONE DI FUNZIONI GESTIONE ARRAY ---------------- */
void LeggiElenco(int Dim,int A[]){      /* Lettura elenco di Dim valori */
int i;
   clrscr();
   gotoxy(17,5);
   textcolor(LIGHTRED);
   cprintf("\n\n --- LETTURA ELENCO DI %d VALORI ---\n",Dim);
   textcolor(LIGHTRED);
   gotoxy(19,10);
   for(i=0;i<Dim;i++){
     gotoxy(25,10+i);
     cprintf(" %d. ",i+1);
     cscanf("%d",&A[i]);
   }
}
void ScriviElencoCol(int Dim,int A[],int col){     /* Visualizzaz. elenco di dim valori */
int i;
  printf("\n\n ------ ELENCO DI %d VALORI -------\n",Dim);
  textcolor(col);
  for(i=0;i<Dim;i++){
    cprintf("%d ",A[i]);
  }
}
void ScriviElenco(int Dim,int A[]){         /* Vis.elenco dim val.*/
int i;
  printf("\n\n ------ ELENCO DI %d VALORI -------\n",Dim);
  for(i=0;i<Dim;i++){
    printf("%d ",A[i]);
  }
  getch();
}
void Ordseqsel(int A[], int N){         /* Ord. sequenziale selettivo di A */
  int i,k;
  int scambio,postmin;
  for(i=0;i <=N-2;i++){
    postmin=i;
    for(k=i+1;k<=N-1;k++){
      if(A[k] < A[postmin])
      postmin=k;
    }
    scambio=A[postmin];
    A[postmin]=A[i];
    A[i]=scambio;
  }
}

In questa libreria costruita da noi, abbiamo scritto i prototipi per la formazione e il corretto funzionamento delle funzioni del nostro programma.
Per ogni prototipo scritto abbiamo definito il suo funzionamento e le cose che deve fare; infatti li abbiamo divisi per ordine di uso.
Per ordinare il nostro elenco abbiamo usato il metodo di Ordinamento Sequenzale Selettivo e nel nostro programma lo abbiamo diviso principalmente in due parti: Nel primo elenco ci sono i valori scritti in ordine sparso dall' utente; invece nel secondo elenco colorato, l'elenco è ordinato . 




